package com.budwk.app.sqfwV2.generator.enterpriseWarrantyServe.pdf;

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.budwk.app.sqfwDoc.codeGeneratorV2.fileParam.PdfGenerateParam;
import com.budwk.app.sqfwDoc.codeGeneratorV2.generate.BasePdfGenerator;
import com.budwk.app.sqfwV2.dto.EnterpriseWarrantyServeDTO;
import com.budwk.app.sqfwV2.enums.enterpriseWarrantyServe.EnterpriseDetpEnum;
import com.budwk.app.sqfwV2.enums.enterpriseWarrantyServe.EnterpriseWarrantyServeFileEnum;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * @author 东方祥云低代码1.1
 * @since 2024-03-25
 * <p>
 * 大营路社会治安 1
 * 【社会治安重点风险场所】合集.docx
 */
public class EnterpriseWarrantyServePdfGenerator extends BasePdfGenerator {

    /**
     * 判断使用使用这个generator生成pdf
     *
     * @param pdfDTO 创建pdf数据素材
     * @return 结果
     */
    @Override
    public boolean pdfCreateConditionCheck(PdfGenerateParam pdfDTO) {
        //EnterpriseWarrantyServeDTO fieldDTO = (EnterpriseWarrantyServeDTO) pdfDTO.getAbstractCustomerPdfCreateField();
        return true;
    }

    @Override
    public String getTemplatePath(PdfGenerateParam pdfGenerateParam) {
        return EnterpriseWarrantyServeFileEnum.ENTERPRISE_INFO_PDF.getTemplatePath();
    }

    @Override
    public void customerPopularPdfParam(Map<String, Object> paramMap, PdfGenerateParam pdfGenerateParam) {
        // 在这里对一些数据进行填充 进行复杂的业务代码逻辑
        EnterpriseWarrantyServeDTO pdfDTO = JSONObject.parseObject(JSONObject.toJSONString(pdfGenerateParam.getAbstractCustomerPdfCreateField()), EnterpriseWarrantyServeDTO.class);
        for (EnterpriseDetpEnum item : EnterpriseDetpEnum.values()) {
            boolean flag = false;
            if (StringUtils.isNotBlank(pdfDTO.getCompetentDepartment()) && pdfDTO.getCompetentDepartment().contains(item.getName())) {
                flag = true;
            }
            paramMap.put(String.format("competentDepartment_%s", item.getCode()), flag);

        }
        paramMap.put("fillDate", DateUtil.format(pdfDTO.getFillDate(), "yyyy-MM-dd HH:mm"));

    }

}
